What is a queue?

Producers
- Produced to SQS using SDK.
 
- The message is persisted until a consumer deletes it.
 
- Message retention: default 4 days, up to 14 days.
 
Consumers
- Poll SQS for messages (receives 10 messages at a time)
 
- Process the messages.
 
- Deletes the messages using SDK.
 

Multiple EC2 Instances
- Receive and process messages in parallel.
 
- At least one delivery.
 
- Consumers delete messages after processing them.
 
- Scale consumers to improve throughput.
 
Auto Scaling Group

Security
- Encryption
 
- Access Controls
 
- SQS Access Policies
 
Message Visibility Timeout
- Once the message is polled by a consume, it becomes invisible to other consumers.
 
- After the visibility time out, if the message is not deleted, it will be visible in SQS.
 
- A consumer can call 
ChangeMessageVisibility API to get more time. 

Long Polling
- When consumer requests messages from the queue, it can optionally wait for the messages to arrive.
 
- This is called Long Polling.
 
- It helps decreases the number of API calls made to SQS.
 
- It can be enabled at queue level or at API level using 
WaitTimeSeconds. 
FIFO Queue
- Limited throughput: 300 messages per second without batching; 3000 messages per second with batching.
 
- Exactly once send capability, by removing duplicates.
 
- Ordering my Message Group ID.
 
Buffer to database writes
